package com.example.springbootdemo.controller;


import com.alibaba.fastjson.JSON;
import com.example.springbootdemo.entity.User;
import com.example.springbootdemo.pojo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;

/**
 * Restful风格的接口案例
 */
@RestController
@Api(tags = "Restful风格的接口")
@RequestMapping("/user-info")
public class RestfulController {

    private static final Logger logger = LoggerFactory.getLogger(RestfulController.class);

    /**
     * 查询用户信息
     * restful风格，查询用GET请求
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    @ApiOperation("查询用户信息")
    public Result findUserById(@PathVariable String id){
        logger.info("接收到的用户id参数是--： " + id);
        logger.info("去数据库查询数据中...");
        logger.info("查询完成");
        User user = new User();
        user.setUsername("马化腾");
        user.setPassword("123456");
        logger.info("返回结果为--： " + JSON.toJSONString(user) );
        return Result.ok(user);
    }

    /**
     * 添加用户
     * restful风格，添加用户用POST请求
     * @param user
     * @return
     */
    @PostMapping
    @ApiOperation("添加用户")
    public Result addUser(@RequestBody @ApiParam(name = "用户对象",value = "传入json格式") User user ){
        logger.info("接收到添加用户请求...");
        logger.info("接收到的json格式数据是： "+ JSON.toJSONString(user));
        //1、校验数据（不为空，数据合理）
        //2、插入数据
        //3、返回响应，操作成功
        return Result.ok();
    }

    /**
     * 修改用户信息
     * restful风格，修改用户信息用PUT请求
     * @param user
     * @return
     */
    @PutMapping("/{id}")
    @ApiOperation("修改用户信息")
    public Result modifyUser(@PathVariable Integer id,@RequestBody @ApiParam(name = "用户对象",value = "传入json格式") User user ){
        logger.info("接收到修改用户信息的请求...");
        logger.info("id--:"+id);
        logger.info("接收到的json格式数据是： "+ JSON.toJSONString(user));
        //1、校验数据（不为空，数据合理）
        //2、修改数据
        //3、返回响应，操作成功
        return Result.ok();
    }

    /**
     * 删除某个用户
     * restful风格，删除用户信息用DELETE请求
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    @ApiOperation("删除用户")
    public Result deleteUser(@PathVariable String id){
        logger.info("接收到的用户id参数是--： " + id);
        logger.info("去数据库删除该条数据...");
        logger.info("删除完成");
        return Result.ok();
    }

}
